10000 REM $linesize: 132 $title: 'CONFIG.BAS V1.8, Copyright 1983,1984,1985 by D. Thomas Mack'; ' WARNING !!! DO NOT CHANGE, BYPASS OR REMOVE LINE 10000-10230
10530 ON ERROR GOTO 60010:DD$="C":GOSUB 10540:SG$=SG1$:FILE$=CA$:GOSUB 30000:IF OK THEN GOTO 10535
10531 GOSUB 31060:PRINT CA$+" file not found. A new one will be created.";:IA!=FNTI!+5:GOSUB 60440
10532 GOSUB 31060:PRINT "Default drive on which RBBS is to reside (A-"+M$+"): ";:LINE INPUT;HJ$:GOSUB 50654:IF LEN(HJ$)<>1 OR HJ$<"A" OR HJ$>M$ THEN 10532
11110 CF=0:KA$=PA$:ND=5:SF=10:FOR I=1 TO 7:SA(I)=SF:NEXT:MM=5:FOR I=1 TO 21:MD(I)=MM:NEXT:FC=5:FOR I=1 TO 10:FS(I)=FC:NEXT:UE=5:FOR I=1 TO 16:UA(I)=UE:NEXT:PD$=TB$+":"+"PASSWRDS":CG=3:CH=5:WC=SB:MN=5:FD$=DD$+DD$:MO$=DD$:UF$="99":RB$=D$+"RBBS.BAT":PC=SB
12445 LOCATE 10,10:PRINT" 8. Page SYSOP using printer's bell -------------- "+M11$
12450 LOCATE 11,10:PRINT" 9. Number of rings to wait before answering -----"STR$(CE)
12460 LOCATE 12,10:PRINT"10. Deny access to callers who use 300 baud ------ "+M34$
12470 LOCATE 13,10:PRINT"11. Are you using ANSI.SYS with a color monitor -- "+M35$
12480 LOCATE 14,10:PRINT"12. Go off-line whenever a DISK FULL occurs ------ "+M36$
12490 LOCATE 15,10:PRINT"13. Prompt bell default is ----------------------- "+M10$
12500 LOCATE 16,10:PRINT"14. Maximum time per session (in minutes) --------"STR$(TC!)
12510 LOCATE 17,10:PRINT"15. Limit each user to"+STR$(TC!)+" minutes/day? "+STRING$((14-LEN(STR$(TC!))),45)+" "+M26$
12530 LOCATE 18,10:PRINT"16. # Months of inactivty before user deleted ----"STR$(LA)
12560 LOCATE 19,10:PRINT"17. Communications port to be used by RBBS-PC ---- "+M13$
12570 LOCATE 20,10:PRINT"18. Version of DOS that RBBS-PC will run under ---"STR$(DA)
12575 LOCATE 21,10:PRINT"19. Name of RBBS-PC shown initially is ----------- "+FF$
12580 GOSUB 24890
12590 GOSUB 22160
12600 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12190,14200,12620
12610 GOTO 12590
12620 GOSUB 50340:IF VAL(HJ$)<1 OR VAL(HJ$)>19 THEN 12580 ELSE ON VAL(HJ$) GOTO 12840,12910,12980,13060,12670,13140,13210,13224,13228,13238,13242,13246,13750,13840,16650,13940,14120,15240,13131
12670 GOSUB 31060:PRINT"Enter password (8 characters or less)";:GOSUB 14990: IF LEN(HJ$)>8 OR INSTR(HJ$,"0!") THEN HJ$="5":GOTO 12670 ELSE KA$=HJ$:GOTO 12360
12730 GOSUB 13590: UF$=HJ$:GOTO 14570
12840 LOCATE 24,5:PRINT"What is the SYSOP's FIRST name? ";
12850 LINE INPUT;HJ$
12860 IF HJ$="" THEN GOTO 12840
12870 IF LEN(HJ$)<3 GOTO 12840
12880 GOSUB 50654
12890 NB$=HJ$
12900 GOTO 12360
12910 LOCATE 24,5:PRINT"What is the SYSOP's LAST name? ";
12920 LINE INPUT;HJ$
12930 IF HJ$="" THEN GOTO 12910
12940 IF LEN(HJ$)<3 GOTO 12910
12950 GOSUB 50654
12960 NC$=HJ$
12970 GOTO 12360
12980 LOCATE 24,5:PRINT"What is the SYSOP's Password #1? ";
12990 LINE INPUT;HJ$
13020 GOSUB 50654
13030 PA$=HJ$
13040 IF PA$="" THEN MN1$="(Disabled)" ELSE MN1$=PA$
13050 GOTO 12360
13060 LOCATE 24,5:PRINT"What is the SYSOP's Password #2? ";
13070 LINE INPUT;HJ$
13100 GOSUB 50654
13110 PB$=HJ$
13120 IF PB$="" THEN MN2$="(Disabled)" ELSE MN2$=PB$
13130 GOTO 12360
13131 LOCATE 24,5:PRINT"Enter name for this RBBS-PC (19 characters or less) ";
14305 LOCATE 13,10:PRINT"31. Is MICROCOM's MNP protocol available? -------- "+M29$
14310 LOCATE 14,10:PRINT"32. Omit ";DIR$;" from N)ew command ";STRING$(22-LEN(DIR$),"-");" ";OB$
14320 LOCATE 15,10:PRINT"33. Omit ";+UF$;" from N)ew command ";STRING$(22-LEN(UF$),"-");" ";OC$
14330 LOCATE 16,10:PRINT"34. Is system 'welcome' interruptable? ----------- "+M18$
14340 LOCATE 17,10:PRINT"35. Are system bulletins to be 'optional'? ------- "+M15$
14360 GOSUB 16062:LOCATE 18,10:PRINT"36. Type of PC RBBS-PC will be running on? ------- "+M27$
14365 LOCATE 19,10:PRINT"37. Issue modem commands between rings ----------- "+M28$
14366 LOCATE 20,10:PRINT"38. Baud rate to initially open modem at --------- "+B$
14367 LOCATE 21,10:PRINT"39. Seconds waited before logging off idle users -"+STR$(TY)
14368 LOCATE 22,10:PRINT"40. Are you using a 'DUMB' auto-answer modem? -----"+M39$
14370 GOSUB 24890
14380 GOSUB 22160
14390 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12360,14570,14410
14400 GOTO 14380
14410 GOSUB 50340:IF VAL(HJ$)<21 OR VAL(HJ$)>40 THEN 14370 ELSE ON VAL(HJ$)-20 GOTO 14420,14430,14440,15710,15800,16690,16722,16730,16790,15880,15911,15920,15960,16000,15840,16040,16121,16124,16031,16725
14420 GOSUB 15520: GOTO 15530
14430 GOSUB 15520: GOTO 15590
14440 GOSUB 15520: GOTO 15650
14570 CN=3
14580 GOSUB 24800
14590 LOCATE 3,10:PRINT"41. Drive containing RBBS-PC bulletins is -------- "+BD$
14600 LOCATE 4,10:PRINT"42. Name of file describing 'bulletins' is ------- "+BA$
14610 LOCATE 5,10:PRINT"43. Number of active 'bulletins' -----------------"+STR$(BG)
14620 LOCATE 6,10:PRINT"44. Prefix used to name bulletin files is -------- "+BB$
14630 LOCATE 7,10:PRINT"45. Drive containing 'help' files is ------------- "+HB$
14640 LOCATE 8,10:PRINT"46. Prefix used to name the nine 'help' files ---- "+HA$
14650 LOCATE 9,10:PRINT"47. Name of 'newuser' file shown to new users ---- "+NA$
14660 LOCATE 10,10:PRINT"48. Name of 'welcome' file shown at logon -------- "+WA$
14680 LOCATE 12,10:PRINT"50. The SYSOP's command menu is named ------------ "+MG$
14690 LOCATE 13,10:PRINT"51. The main messages subsystem menu is named ---- "+MH$
14700 LOCATE 14,10:PRINT"52. The file subsystem menu is named ------------- "+MI$
14710 LOCATE 15,10:PRINT"53. The utilities subsystem menu is named -------- "+MJ$
14730 LOCATE 16,10:PRINT"54. Menu that lists available conferences is ----- "+CD$
14740 LOCATE 17,10:PRINT"55. File containing invalid user names ----------- "+BC$
14742 LOCATE 18,10:PRINT"56. Factor to extend session time for uploads ----"+STR$(UPX!)
14744 LOCATE 19,10:PRINT"57. Default system type for new callers ---------- "+SY$
14745 LOCATE 20,10:PRINT"58. Drive available for Uploading ---------------- "+M6$
14746 LOCATE 21,10:PRINT"59. Name of directory for uploading -------------- "+UF$
14747 LOCATE 22,10:PRINT"60. Drive(s) available for Downloading ----------- "+M7$
14750 GOSUB 24890
14760 GOSUB 22160
14770 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,14200,15340,14790
14780 GOTO 14760
14790 GOSUB 50340
14800 IF HJ$="41"THEN GOSUB 15160:BD$=TB$:GOTO 14570
14810 IF HJ$="42" THEN GOSUB 14970:BA$=HJ$: GOTO 14570
14820 IF HJ$="43" THEN GOTO 15290
14830 IF HJ$="44" THEN GOSUB 14970: IF LEN(HJ$)>6 THEN HJ$="44":GOTO 14810 ELSE BB$=HJ$: GOTO 14570
14840 IF HJ$="45" THEN GOSUB 15160:HB$=HJ$: GOTO 14570
14850 IF HJ$="46" THEN GOSUB 14970: IF LEN(HJ$)>7 THEN HJ$="44":GOTO 14810 ELSE HA$=HJ$: GOTO 14570
14860 IF HJ$="47" THEN GOSUB 17330: NA$=SJ$+":"+HJ$: GOTO 14570
14870 IF HJ$="48" THEN GOSUB 17330: WA$=SJ$+":"+HJ$: GOTO 14570
14880 IF HJ$="49" THEN GOSUB 13591: DIR$=HJ$: GOTO 14570
14890 IF HJ$="50" THEN GOSUB 17330: MG$=SJ$+":"+HJ$: GOTO 14570
14900 IF HJ$="51" THEN GOSUB 17330: MH$=SJ$+":"+HJ$: GOTO 14570
14910 IF HJ$="52" THEN GOSUB 17330: MI$=SJ$+":"+HJ$: GOTO 14570
14920 IF HJ$="53" THEN GOSUB 17330: MJ$=SJ$+":"+HJ$: GOTO 14570
14940 IF HJ$="54" THEN GOSUB 17330: CD$=SJ$+":"+HJ$: GOTO 14570
14950 IF HJ$="55" THEN GOSUB 17330: BC$=SJ$+":"+HJ$:GOTO 14570
14952 IF HJ$="56" THEN GOSUB 15234:GOTO 14570
14954 IF HJ$="57" THEN GOSUB 15236:GOTO 14570
14955 IF HJ$="58" THEN A$="uploading":GOSUB 13400:M6$=HJ$:IF LEN(M33$)>1 THEN MID$(M33$,1,1)=M6$:GOTO 14570 ELSE GOTO 14570
14956 IF HJ$="59" THEN GOTO 12730
14957 IF HJ$="60" THEN GOTO 13470
14960 GOTO 14750
14970 X$=HJ$
14980 GOSUB 31060:PRINT"Specify name of the file for option "+X$+". ";
14990 LINE INPUT;HJ$:GOSUB 50654
15000 IF LEN(HJ$)<1 OR LEN(HJ$)>12 THEN GOTO 14980
15010 L1=INSTR(HJ$,"."):IF L1=0 THEN IF LEN(HJ$)<9 THEN GOTO 15045 ELSE GOTO 14980
15020 IF L1>9 THEN GOTO 14980
15030 IF L1<2 THEN GOTO 14980
15040 IF LEN(HJ$)-L1>3 THEN GOTO 14980
15045 I=0:GOSUB 25920:IF I=0 THEN RETURN ELSE GOTO 14980
15160 X$=HJ$
15170 LOCATE 24,5:PRINT"Specify drive in the range A->"+M$+" for option "+X$". ";
15180 LINE INPUT;HJ$
15190 IF LEN(HJ$)<>1 THEN GOTO 15170
15200 GOSUB 50654
15210 IF HJ$<"A" OR HJ$>M$ THEN GOTO 15170
15220 TB$=HJ$
15230 RETURN
15234 LOCATE 24,5:PRINT "Extend by what fraction of time uploading ";:LINE INPUT;HJ$:IF VAL(HJ$)<0 OR VAL(HJ$)>10 THEN 15234 ELSE UPX!=VAL(HJ$):RETURN
15236 LOCATE 24,5:PRINT "Enter default system type ";:LINE INPUT;SY$:IF LEN(SY$)<2 THEN GOSUB 50340:GOTO 15236 ELSE RETURN
15240 LOCATE 24,5:PRINT"What version of DOS will RBBS-PC be running under (1, 2, or 3)?";
15250 LINE INPUT;HJ$
15260 B1=VAL(HJ$)
15270 IF B1<1 OR B1>3 THEN GOTO 15240
15280 DA=B1:GOTO 12360
15290 LOCATE 24,5:PRINT"Enter number of active 'bulletins' (0 to 99)";
15300 LINE INPUT;HJ$
15310 B1%=VAL(HJ$)
15320 IF B1%<0 OR B1%>99 THEN GOTO 15290
15330 BG=B1%:GOTO 14570
15340 CN=4
15350 GOSUB 24800
15360 LOCATE 4,10:PRINT"61. System file containing messages is named ----- "+ME$
15380 LOCATE 5,10:PRINT"62. System file for 'callers' is named ----------- "+CB$
15390 LOCATE 6,10:PRINT"63. System file for comments to SYSOP is named --- "+CC$
15400 LOCATE 7,10:PRINT"64. System file for recording users is named ----- "+UC$
15405 LOCATE 8,10:PRINT"65. Extended logging to 'callers' file ----------- "+M37$
15410 GOSUB 24890
15420 GOSUB 22160
15430 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,14570,16130,15450
15440 GOTO 15420
15450 GOSUB 50340
15460 IF HJ$="61" THEN GOSUB 17330: GOTO 15511
15480 IF HJ$="62" THEN GOSUB 17330: CB$=SJ$+":"+HJ$:GOTO 15340
15490 IF HJ$="63" THEN GOSUB 17330: CC$=SJ$+":"+HJ$:GOTO 15340
15500 IF HJ$="64" THEN GOSUB 17330: GOTO 15512
15505 IF HJ$="65" THEN GOTO 15991
15510 GOTO 15410
15511 IF LEN(HJ$)>8 OR INSTR(HJ$,".") THEN HJ$="61":GOTO 15460 ELSE ME$=SJ$+":"+HJ$:MF$=ME$+".BAK":MAINMSG$=ME$:GOTO 15340
15512 IF LEN(HJ$)>8 OR INSTR(HJ$,".") THEN HJ$="64":GOTO 15500 ELSE UC$=SJ$+":"+HJ$:MAINUSR$=UC$:GOTO 15340
15520 LOCATE 24,5:PRINT"(See the description of the COLOR statement in Basic.)";:RETURN
15530 LOCATE 25,5:PRINT"Enter foreground color (a value between 0 and 15)";
15540 LINE INPUT;HJ$
15550 B1=VAL(HJ$)
15560 IF B1<0 OR B1>15 THEN GOTO 15530
15570 FGR=B1
15580 GOTO 14200
15590 LOCATE 25,5:PRINT"Enter background color (a value between 0 and 7)";
15600 LINE INPUT;HJ$
15610 B1=VAL(HJ$)
15620 IF B1<0 OR B1>7 THEN GOTO 15590
15630 BGR=B1
15640 GOTO 14200
15650 LOCATE 25,5:PRINT"Enter the border color (a value between 0 and 7)";
15660 LINE INPUT;HJ$
15670 B1=VAL(HJ$)
15680 IF B1<0 OR B1>7 THEN GOTO 15650
15690 BDR=B1
15700 GOTO 14200
15710 LOCATE 24,5:PRINT"Modem speaker default? (ON or OFF) ";
15720 LINE INPUT;HJ$
15730 IF LEN(HJ$)<1 OR LEN(HJ$)>3 THEN GOTO 15710
15740 GOSUB 50654
15750 IF HJ$="ON" THEN GOTO 15780
15760 IF HJ$="OFF" THEN GOTO 15780
15770 GOTO 15710
15780 M14$=HJ$
15790 GOTO 14200
15800 XX$="Remind users of the messages they left? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 15820,15820,15800,15800
15820 M16$=HJ$:GOTO 14200
15840 XX$="Are system bulletins to be optional? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 15860,15860,15840,15840
15860 M15$=HJ$:GOTO 14200
15880 XX$="Is non-ascii protocol required for binary files? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 15900,15900,15880,15880
15900 M17$=HJ$:GOTO 14200
15911 XX$="Enable MICROCOM's MNP protocol? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 15913,15913,15911,15911
15913 M29$=HJ$:GOTO 14200
15920 XX$="Is "+DIR$+" omitted from the N)ew command? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 15940,15940,15920,15920
15940 OB$=HJ$:GOTO 14200
15960 XX$="Is "+UF$+" omitted from the N)ew command? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 15980,15980,15960,15960
15980 OC$=HJ$:GOTO 14200
15991 LOCATE 24,5:PRINT"Do you want EXTENDED logging to the 'callers' file (YES OR NO) ";:GOSUB 22380:ON AB GOTO 15992,15992,15991,15991
15992 M37$=HJ$:GOTO 15340
16000 LOCATE 24,5:PRINT"Is system 'welcome' interruptable (YES OR NO) ";
16010 GOSUB 22380:ON AB GOTO 16020,16020,16000,16000
16020 M18$=HJ$:GOTO 14200
16031 LOCATE 24,5:PRINT"Seconds users can be idle before being logged off";
16032 LINE INPUT;HJ$
16033 TY=VAL(HJ$)
16034 IF TY<1 OR TY>32400 THEN GOTO 16031
16035 GOTO 14200
16040 CLS:LOCATE 5,5:PRINT "Please selecte the type of PC which RBBS-PC will be running on:":LOCATE 7,10:PRINT "0. IBM PC, IBM XT, or IBM AT":LOCATE 9,10:PRINT "1. Compaq/Plus or compatable that uses interrupt 7F":LOCATE 11,10:PRINT "2. IBM PCjr
16045 LOCATE 13,10:PRINT "3. Other compatable under IBM's DOS (i.e. PC-DOS)
16050 GOSUB 50340:LOCATE 24,5:PRINT "Select environment (0 to 3, CR to end)";:LINE INPUT;X$:IF X$="" THEN GOTO 14200 ELSE CM=VAL(X$):GOSUB 16060:IF CM=2 THEN GOTO 16071 ELSE GOTO 14200
16060 IF CM<0 OR CM>3 GOTO 16050
16062 IF CM=0 THEN M27$="IBM PC, XT, or AT
16064 IF CM=1 THEN M27$="Compaq/Plus
16066 IF CM=2 THEN M27$="PCjr
16068 IF CM=3 THEN M27$="Other under PC-DOS
16070 RETURN
16071 PCJR=0:XX$="Is an IBM PCjr Internal Modem installed? (YES or NO)":GOSUB 50345:GOSUB 22380:ON AB GOTO 16072,14200,16071,16071
16072 PCJR=1:GOTO 14200
16121 LOCATE 24,5:PRINT"Wait to issue modem commands between rings? (YES OR NO) ";
16122 GOSUB 22380:ON AB GOTO 16123,16123,16121,16121
16123 M28$=HJ$:GOTO 14200
16124 LOCATE 25,5:PRINT"Enter baud rate (300, 1200, 2400, 4800, 9600) to open modem at ";
16125 LINE INPUT;HJ$
16126 B1=VAL(HJ$)
16127 IF B1=300 OR B1=1200 OR B1=2400 OR B1=4800 OR B1=9600 THEN GOTO 16128 ELSE GOTO 16124
16128 B$=MID$(STR$(B1),2)
16129 GOTO 14200
16130 CN=5
16140 GOSUB 24800
16150 LOCATE 3,10:PRINT"81. Is the 'door' subystem available? ------------ "+M21$
16160 LOCATE 4,10:PRINT"82. The 'door' subsystem menu is named ----------- "+MK$
16170 LOCATE 5,10:PRINT"83. File RBBS builds dynamically to open a 'door'- "+CI$
16180 LOCATE 6,10:PRINT"84. When a 'door' closes, file to re-invoke RBBS - "+RB$
16185 LOCATE 7,10:PRINT"85. Drive to look for COMMAND.COM on ------------- "+M38$
16190 GOSUB 24890
16200 GOSUB 22160
16210 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,15340,16910,16230
16220 GOTO 16200
16230 GOSUB 50340
16240 IF HJ$="81" THEN GOTO 16290
16250 IF HJ$="82" THEN GOSUB 17330: MK$=SJ$+":"+HJ$:GOTO 16130
16260 IF HJ$="83" THEN GOSUB 17330: CI$=SJ$+":"+HJ$:GOTO 16130
16270 IF HJ$="84" THEN GOSUB 17330: RB$=SJ$+":"+HJ$:GOTO 16130
16275 IF HJ$="85" THEN A$="COMMAND.COM":GOSUB 13400:M38$=HJ$+":":GOTO 16130
16280 GOTO 16190
16290 XX$="Is the window subsystem available? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 16310,16310,16290,16290
16310 M21$=HJ$
16320 IF M21$="NO" GOTO 16130 ELSE GOSUB 50340:LOCATE 24,1:PRINT "Will you be running RBBS-PC under MultiLink from The Software Link? ";
16330 GOSUB 22380:ON AB GOTO 16340,16350,16290,16290
16340 IA!=FNTI!+15:GOSUB 16470:GOTO 16130
16350 GOSUB 16380:GOTO 16360
16360 LOCATE 23,1:PRINT"Current Multi-Link terminal type for WINDOWS is ";MN
16370 GOSUB 50340:LOCATE 24,1:PRINT "Enter Multi-Link terminal type for WINDOWS ";:GOSUB 17420:MN=B1:IF MN <1 THEN 16370 ELSE IF MN >12 THEN GOTO 16370 ELSE GOTO 16130
16380 CLS:PRINT "Multi-Link is a software product of The Software Link, Inc.":PRINT"located at 6700 23-B Roswell Road, Atlanta, Georgia 30328.":PRINT "It allows IBM's DOS 1.1 or 2.0 or the IBM PC to be a multi-tasking
16400 PRINT "operating system. The Capital PC User Group has no connection
16410 PRINT "whatsoever with this company or it's products. In fact The Software":PRINT"Link has only occasionally sent updates of it's new releases to us.":PRINT"That is the reason that RBBS-PC is only supported under Release 3.02 of
16420 PRINT"Multi-Link. I feel strongly that IBM's DOS for the PC should be":PRINT"multi-tasking. Because Multi-Link provides this capability for the widest
16430 PRINT"ranges of DOS software for the IBM PC, RBBS-PC has been enhanced":PRINT "to run under Multi-Link. Any questions regarding RBBS-PC under Multi-Link":PRINT"(other than Release 3.02 of Multi-Link) should be directed to The
16440 PRINT"Software Link's customer support group at (404) 998-0788.":PRINT"":PRINT"I have run RBBS-PC under Multi-Link since December 1983 -- since Multi-Link":PRINT"release 2.04. Since Multi-Link release 2.06 I HAVE NEVER HAD A SYSTEM CRASH
16450 PRINT"due to Multi-Link. I think it is a quality product but a bit over-priced.":PRINT "My opnion on Multi-Link's price reflects my prejudice that all PC software":PRINT"should be relatively inexpensive.":PRINT"":PRINT SPC(60);"Tom Mack
16460 PRINT SPC(60);"July 1, 1984":RETURN
16470 CLS:PRINT" ******Warning******":PRINT"IBM's DOS absolutely REQUIRES any software package running":PRINT"as a 'door' (i.e. via a communication port) to monitor the":PRINT"communication port! Unless the software that you invoke via
16480 PRINT"the RBBS-PC 'door' mechanism monitors the communication line,":PRINT"your system will be vulnerable to being hung -- and worse!!!":PRINT"If you don't THROUGHLY understand section 11.0 of RBBS-PC's
16490 PRINT"documentation which discusses the pitfalls of opening RBBS-PC's":PRINT"'doors' to your users, DON'T use 'doors'!!!!!
16640 IF FNTI!<IA! THEN 16640 ELSE RETURN
16650 XX$="Limit the maximum time a users can be on each day? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 16670,16670,16650,16650
16670 M26$=HJ$:GOTO 12360
16690 XX$="Remind users of # uploads and downloads? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 16710,16710,16690,16690
16710 M19$=HJ$:GOTO 14200
16722 XX$="Remind users of their terminal's profile? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 16724,16724,16722,16722
16724 M20$=HJ$:GOTO 14200
16725 XX$="Are you using a non-Hayes auto-answer only modem? (YES or NO) ":GOSUB 50345:GOSUB 22380:ON AB GOTO 16726,16726,16725,16725
16726 M39$=HJ$:GOTO 14200
16730 LOCATE 24,5:PRINT"Default user page length?(a value between 0 and 255)";
16740 LINE INPUT;HJ$
16750 B1=VAL(HJ$)
16760 IF B1<0 OR B1>255 THEN GOTO 16730
16770 PL=B1
16780 GOTO 14200
16790 LOCATE 24,5:PRINT"Maximum number of lines allowed per message (1->30)";
16800 LINE INPUT;HJ$
16810 B1=VAL(HJ$)
16820 IF B1<1 OR B1>30 THEN GOTO 16790
16830 LW=B1
16840 GOTO 14200
16850 LOCATE 24,5:PRINT"Security level temporarily imposed on conference 'viewers'";
16860 HJ$="V>iew
16870 GOSUB 17420:VA=B1
16900 GOTO 16910
16910 CN=6
16920 GOSUB 24800
16930 LOCATE 3,9:PRINT"101. Minimum security level to get onto RBBS ------ "STR$(ML)
16940 LOCATE 4,9:PRINT"102. Default security level for new callers ------- "STR$(DB)
16950 LOCATE 5,9:PRINT"103. Security level for SYSOP --------------------- "STR$(SB)
16960 LOCATE 6,9:PRINT"104. Files with download security are listed in --- "+FB$
16970 LOCATE 7,9:PRINT"105. Minimum security level to see SYSOP's menu --- "STR$(SC)
16980 LOCATE 8,9:PRINT"106. Minimum security level to use RBBS-PC 'doors' "+STR$(SD)
16990 LOCATE 9,9:PRINT"107. Max # security violations before disconnect -- "STR$(ND)
17000 M22$=STR$(SF):IX=SA(1):FOR I=2 TO 7:IF IX<>SA(I) THEN M22$="(Variable)":GOTO 17010 ELSE NEXT
17010 LOCATE 10,9:PRINT"108. Security level for SYSOP functions ----------- "M22$
17020 M23$=STR$(MM):IX=MD(1):FOR I=2 TO 21:IF IX<>MD(I) THEN M23$="(Variable)":GOTO 17030 ELSE NEXT
17030 LOCATE 11,9:PRINT"109. Security level for main menu functions ------- "M23$
17040 M24$=STR$(FC):IX=FS(1):FOR I=2 TO 10:IF IX<>FS(I) THEN M24$="(Variable)":GOTO 17050 ELSE NEXT
17050 LOCATE 12,9:PRINT"110. Security level for file menu functions ------- "M24$
17060 M25$=STR$(UE):IX=UA(1):FOR I=2 TO 16:IF IX<>UA(I) THEN M25$="(Variable)":GOTO 17070 ELSE NEXT
17070 LOCATE 13,9:PRINT"111. Security level for utilities menu functions -- "M25$
17080 LOCATE 14,9:PRINT"112. File with privileged group passwords is named- "PD$
17090 LOCATE 15,9:PRINT"113. Max # of password changes in a session ------- "STR$(CG)
17100 LOCATE 16,9:PRINT"114. Min. security level for temp. password changes "STR$(CH)
17110 LOCATE 17,9:PRINT"115. Min. security level to overwrite on uploads -- "STR$(WC)
17115 LOCATE 18,9:PRINT"116. Security level of conference 'viewers' ------- "STR$(VA)
17116 LOCATE 19,9:PRINT"117. User's security exempted from 'packing' ------ "STR$(PC)
17120 GOSUB 24890
17130 GOSUB 22160
17140 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,16130,21550,17160
17150 GOTO 17130
17160 GOSUB 50340
17170 IF HJ$="101" THEN GOSUB 18730:GOSUB 17410:ML=B1:GOTO 16910
17180 IF HJ$="102" THEN GOSUB 18730:GOSUB 17410:DB=B1:GOTO 16910
17190 IF HJ$="103" THEN GOSUB 18730:GOSUB 17410:SB=B1:GOTO 16910
17200 IF HJ$="104" THEN GOSUB 17330:FB$=SJ$+":"+HJ$:GOTO 16910
17210 IF HJ$="105" THEN GOSUB 18730:GOSUB 17410:SC=B1:GOTO 16910
17220 IF HJ$="106" THEN GOSUB 18730:GOSUB 17410:SD=B1:GOTO 16910
17230 IF HJ$="107" THEN GOSUB 18730:GOSUB 17410:ND=B1:GOTO 16910
17240 IF HJ$="108" THEN GOTO 17460
17250 IF HJ$="109" THEN GOSUB 17460:MM=B1:GOTO 16910
17260 IF HJ$="110" THEN GOSUB 17460:FC=B1:GOTO 16910
17270 IF HJ$="111" THEN GOSUB 17460:UE=B1:GOTO 16910
17280 IF HJ$="112" THEN GOSUB 17330:PD$=SJ$+":"+HJ$:GOTO 16910
17290 IF HJ$="113" THEN GOSUB 50340:LOCATE 24,1:PRINT "Maximum number of password changes is? (0 or more)";:GOSUB 17420:CG=B1:IF B1<0 THEN 17290 ELSE 16910
17300 IF HJ$="114" THEN GOSUB 18730:GOSUB 17410:CH=B1:GOTO 16910
17310 IF HJ$="115" THEN HJ$="overwriting files on upload":GOSUB 17410:WC=B1:GOTO 16910
17315 IF HJ$="116" THEN GOTO 16850
17316 IF HJ$="117" THEN GOSUB 18730:GOSUB 17410:PC=B1:GOTO 16910
17320 GOTO 17120
17330 X$=HJ$:LOCATE 24,5:PRINT"Specify drive (A->"+M$+") where file for option "+X$+" will be located. ";
17340 LINE INPUT;HJ$
17350 IF LEN(HJ$)<>1 THEN HJ$=X$:GOTO 17330
17360 GOSUB 50654
17370 IF HJ$<"A" OR HJ$>M$ THEN HJ$=X$:GOTO 17330
17380 SJ$=HJ$
17390 GOSUB 14980
17400 RETURN
17410 GOSUB 50340:LOCATE 24,1:PRINT "Security level for "+HJ$+" is? ";
17420 LINE INPUT;HK$
17430 B1=VAL(HK$)
17440 IF B1=0 AND HK$<>"0" THEN 17410
17450 RETURN
17460 IF HJ$="108" THEN CO$="SYSOP":GOTO 18480
17470 IF HJ$="109" THEN CO$="Main Menu":GOTO 18100
17480 IF HJ$="110" THEN CO$="File System":GOTO 17820
17490 IF HJ$="111" THEN CO$="Utilities
17500 LOCATE 24,1:PRINT"Set ALL the "+CO$+" commands to the SAME security level? (YES or NO)";
17510 LINE INPUT;X$
17520 IF LEN(X$)<1 OR LEN(X$)>3 THEN GOTO 17500
17530 SWAP HJ$,X$:GOSUB 50654:SWAP HJ$,X$
17540 IF X$="YES" OR X$="Y" THEN HJ$="all "+CO$+" commands":GOSUB 17410:FOR I=1 TO 16:UA(I)=B1:NEXT:UE=B1:GOTO 16910
17640 LOCATE 11,10:PRINT"M)sg margin "+STR$(UA(7)):LOCATE 12,10:PRINT"N)ulls "+STR$(UA(8)):LOCATE 13,10:PRINT"P)ass word "+STR$(UA(9))
17670 LOCATE 14,10:PRINT"Q)uit to main menu "+STR$(UA(10)):LOCATE 15,10:PRINT"R)eview Default "+STR$(UA(11)):LOCATE 16,10:PRINT"S)tatistics "+STR$(UA(12))
21660 IF IX THEN ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,16910,23000,21680
21670 GOTO 21650
21680 GOSUB 50340
21690 IF HJ$="121" THEN GOTO 21750
21700 IF HJ$="122" THEN GOTO 21810
21710 IF HJ$="123" THEN GOTO 21950
21720 IF HJ$="125" THEN GOSUB 22040:GOTO 21550
21730 IF HJ$="124" THEN IF F=2 THEN GOSUB 22560:GOTO 21550 ELSE GOSUB 22100:GOTO 21550
21735 IF HJ$="126" THEN GOTO 13890
21736 IF HJ$="127" THEN GOTO 25040
21740 GOTO 21640
21750 GOSUB 50340:LOCATE 24,5:PRINT"Maximum number of conurrent RBBS-PC's? (a value between 1 and 36)";
21760 LINE INPUT;HJ$
21770 B1=VAL(HJ$)
21780 IF B1<1 OR B1>36 THEN GOTO 21750
21790 IF MC=B1 THEN GOTO 21550
21795 B3!=MQ!:GOSUB 30610
21800 GOTO 21550
21810 CLS:LOCATE 3,5:PRINT"RBBS-PC is supported in the following:":LOCATE 5,20:PRINT"Environment":LOCATE 7,10:PRINT"0. Single RBBS-PC in an IBM DOS environment":LOCATE 9,10:PRINT"1. MultiLink (multi-tasking under single DOS)
21840 LOCATE 11,10:PRINT"2. Omninet (CORVUS)":LOCATE 13,10:PRINT"3. PC-NET (Orchid)":LOCATE 15,10:PRINT"4. Top-View (IBM's multi-tasking for DOS 3.1) -- not yet supported
21870 GOSUB 50340:LOCATE 24,5:PRINT"Select environment (0 to 4, CR to end)";:LINE INPUT;X$:IF X$=""THEN 21550 ELSE SE=VAL(X$):GOSUB 21890:GOTO 21550
21890 IF SE<0 OR SE>4 GOTO 21870
21895 IF SE=0 THEN EA$="IBM's DOS
21900 IF SE=1 THEN EA$="MultiLink
21910 IF SE=2 THEN EA$="Omninet
21920 IF SE=3 THEN EA$="PC-NET
21930 IF SE=4 THEN EA$="Top-View -- future
21940 RETURN
21950 GOSUB 50340:LOCATE 24,5:PRINT"How RBBS-PC recycles when users logs off (SYSTEM or INTERNAL)? ";
21960 LINE INPUT;HJ$
21970 IF LEN(HJ$)<1 OR LEN(HJ$)>8 THEN GOTO 21950
21980 GOSUB 50654
21990 IF HJ$="SYSTEM" THEN CF=1:GOTO 22020
22000 IF HJ$="INTERNAL" THEN CF=0:GOTO 22020
22010 GOTO 21950
22020 RA$=HJ$
22030 GOTO 21550
22040 GOSUB 50340:LOCATE 24,5:PRINT"Max. records in preformatted "+ME$+" file (>"+STR$(5*MP+1+MC)+"):";
22050 LINE INPUT;HJ$
22060 B3!=VAL(HJ$)
22070 IF B3!<=(5*MP+1+MC) OR B3!>9999999! THEN GOTO 22040
22080 B1=MC:GOSUB 30610:MQ!=B3!
22090 RETURN
22100 GOSUB 50340:LOCATE 24,5:FF=IE:IF FF>1 THEN FF=FF-1
22105 GOSUB 50340:LOCATE 24,5:PRINT STR$(FF)+" of"+STR$(IG)+" records used. Enter new maximum number of records for "+UC$+":";
22110 LINE INPUT;HJ$
22120 B1=VAL(HJ$)
22130 IF B1<1 OR B1>99999! OR B1<FF THEN GOTO 22100
22140 B2=2:WHILE B2<B1:B2=B2*2:WEND:IF UB=B2 THEN RETURN
22142 XX$="Change "+UC$+" file to"+STR$(B2)+" records? (YES or NO)":GOSUB 50345:GOSUB 22380:ON AB GOTO 22100,22150,22100,22100
23720 IF RB AND VAL(MID$(R$,2,4))=IO THEN GOTO 23730
23722 IF RB THEN GOSUB 50580
23725 NEXT
23730 GET 1,1:MID$(R$,1,8)=SPACE$(8):MID$(R$,1,8)=STR$(SK):PUT 1,1:CLOSE 1:IA!=FNTI!+5:GOSUB 60440:GOTO 23000
23731 LOCATE 25,5:PRINT "Setting Hayes 2400 firmware switches for RBBS-PC on "+M13$;:IA!=FNTI!+3:GOSUB 60440
23732 A$="AT&C1&D2B1E0V1M0S0="+MID$(STR$(VAL(MID$(SG$,24,3))),2,3):LOCATE 25,5:PRINT SPACE$(74);:LOCATE 25,5:PRINT "Prevent remote digitial loop back tests? ";:GOSUB 22380:ON AB GOTO 23734,23733,23732,23732
23733 A$=A$+"&T5"
23734 OPEN M13$+":2400,N,8,1,RS,CD,DS" AS #3: PRINT #3,"ATZ":IA!=FNTI!+3:GOSUB 60440:PRINT #3,A$+"&W":GOSUB 60440
23735 CLOSE #3:LOCATE 25,5:PRINT SPACE$(74);:LOCATE 25,5:PRINT "Hayes 2400 firmware switches are now set for RBBS-PC on "+M13$;:IA!=FNTI!+3:GOSUB 60440:RETURN
23740 GOSUB 30040
23750 GOSUB 50340:LOCATE 24,5:PRINT"Renumber starting with OLD message # (<"+STR$(IO+1)+")";
23760 LINE INPUT;HJ$
23770 IF HJ$="" THEN GOTO 23000
23780 B1=VAL(HJ$)
23790 IF B1<1 OR B1>IO THEN GOTO 23750
23800 RE=B1
23810 GOSUB 50340:LOCATE 24,5:PRINT"Renumber starting with NEW message # ";
23820 LINE INPUT;HJ$
23830 IF HJ$="" THEN GOTO 23000
23840 B1=VAL(HJ$)
23850 IF B1<1 OR B1>9999 THEN GOTO 23810
23860 NE=B1-1
23870 OPEN "R",1,ME$
23880 FIELD 1,128 AS R$
23890 GOSUB 50340
23910 FOR I = IJ TO II-1
23920 GET 1,I
23930 IF INSTR(R$,CHR$(225)) OR INSTR(R$,CHR$(226)) THEN GOSUB 24010:GOSUB 23610
23940 NEXT
23942 GET 1,1
23944 MID$(R$,1,8)=SPACE$(8) ' Update the checkpoint record with the
23946 MID$(R$,1,8)=STR$(NE) ' 1- 8 = number of last message on system
23947 PUT 1,1
23950 CLOSE 1
23980 IA!=FNTI!+1
23990 GOSUB 60440
24000 GOTO 23000
24010 LOCATE 24,15
24020 PRINT "Msg #"+MID$(R$,1,5);
24030 IF VAL(MID$(R$,2,4))<RE THEN PRINT " read";:RETURN
24040 Y$=MID$(R$,1,1)
24045 MID$(R$,1,5)=SPACE$(5)
24046 NE=NE+1
24050 MID$(R$,1,5)=STR$(NE)
24060 MID$(R$,1,1)=Y$
24070 PRINT " renumbered as Msg #"+MID$(R$,1,5)
24090 PUT 1,I
24100 RETURN
24110 GOSUB 30040
24119 OPEN "R",1,UC$,128
24120 FIELD 1,31 AS O.N$,15 AS OG$,2 AS OH$,14 AS OI$,24 AS OJ$,19 AS OL$,14 AS OM$,3 AS OO$,2 AS OQ$,2 AS OS$,2 AS OT$
25610 LAST=(DNLD.SUB/16)+1:INCR=1:FOR IX=1 TO LAST:GOSUB 24800:LOCATE 4,1:PRINT"DOS sub-directories from which downloads are done:";:INDEX=4:FOR I=1 TO 16:LOCATE INDEX+I,1:PRINT DNLD$(INCR);:INCR=INCR+1:IF INCR>DNLD.SUB GOTO 25668
25634 NEXT
25636 XX$="More (YES or NO)":GOSUB 50345:GOSUB 22380:ON AB GOTO 25668,25644,25636,25636
25644 NEXT
25668 GOTO 25505
25670 GOSUB 25850:IF LEN(HJ$)<1 THEN GOTO 25505
25675 GOSUB 26030:A$=" not found!":IF X$="" THEN GOTO 25682
25680 FOR I=1 TO DNLD.SUB:IF X$=DNLD$(I) THEN GOTO 25698 ELSE NEXT
25698 IF FF=4 THEN FOR X=I TO DNLD.SUB:DNLD$(X)=DNLD$(X+1):NEXT:A$=" deleted!":DNLD.SUB=DNLD.SUB-1:GOTO 25682
25700 IF FF=2 THEN A$="download":II=I:GOSUB 25850:GOSUB 26030:SWAP DNLD$(II),X$:A$=" changed!":GOTO 25682
25730 X$="":GOSUB 25850:IF LEN(HJ$)<1 THEN GOTO 25505 ELSE FOR I=1 TO LEN(M7$):IF MID$(M7$,I,1)=LEFT$(X$,1) THEN GOTO 25735 ELSE NEXT:GOSUB 60380:GOSUB 31060:PRINT X$+" is not on a drive eligible for downloading.";:IA!=FNTI!+5:GOSUB 60440:GOTO 25730
25735 IF X$="" THEN GOTO 25220 ELSE DNLD.SUB=DNLD.SUB+1:DNLD$(DNLD.SUB)=X$:GOTO 25505
25850 GOSUB 31060:PRINT"Enter "+A$" DOS sub-directory name (CR to end). ";
25860 LINE INPUT;HJ$:GOSUB 50654
25861 IF LEN(HJ$)<1 THEN RETURN
25862 IF LEN(HJ$)=2 AND INSTR(HJ$,":")=2 THEN X$=HJ$:RETURN
25863 IF INSTR(HJ$,":\")<>2 THEN GOTO 25850
25870 X$=HJ$
25871 FOR I=4 TO LEN(X$)
25872 Y=INSTR(I,X$,"\")
25873 IF Y=0 THEN L1=LEN(X$)-I+1:GOTO 25876
25874 IF Y<>0 THEN L1=Y-I+1:GOTO 25876
25875 NEXT
25876 HJ$=MID$(X$,I,L1)
25878 IF LEN(HJ$)>12 THEN GOTO 25850
25880 L1=INSTR(HJ$,"."):IF L1=0 THEN IF LEN(HJ$)<9 THEN GOTO 25920 ELSE GOTO 25850
25890 IF L1>9 THEN GOTO 25850
25900 IF L1<2 THEN GOTO 25850
25910 IF LEN(HJ$)-L1>3 THEN GOTO 25850
25915 I=0:GOSUB 25920:IF I=0 THEN RETURN ELSE GOTO 25850
25920 FOR J=1 TO LEN(HJ$)
25930 X=ASC(MID$(HJ$,J,1))
25940 IF (X>63 AND X<91) THEN GOTO 26020
25950 IF (X>47 AND X<58) THEN GOTO 26020
25960 IF (X=33) THEN GOTO 26020
25970 IF (X>34 AND X<42) THEN GOTO 26020
25980 IF (X>43 AND X<47) THEN GOTO 26020
25990 IF (X>96 AND X<124) THEN GOTO 26020
26000 IF (X=125) THEN GOTO 26020
26010 I=1:RETURN
26020 NEXT: RETURN
26030 FOR I=1 TO LEN(M7$):IF MID$(M7$,I,1)=MID$(X$,1,1) THEN RETURN
26032 NEXT:X$="":RETURN
30000 OK=0 ' <---- check to see if file exists
30010 NAME FILE$ AS FILE$ ' OK=0 means file not found
30020 OK=-1 ' OK=1 means file exists
30030 RETURN
30040 OPEN "R",2,ME$,128 ' <---- read MESSAGES checkpoint record
30050 FIELD 2,128 AS RR$
30060 GET 2,1
30090 IO=VAL(MID$(RR$,1,8)) ' 1- 8 = number of last message on system
30100 ID=VAL(MID$(RR$,52,5)) ' 52- 56 = first rec. of user file
30110 IE=VAL(MID$(RR$,57,5)) ' 57- 61 = next avail. user record
30120 IG=VAL(MID$(RR$,62,5)) ' 62- 66 = last rec. of user file
30130 IJ=VAL(MID$(RR$,68,7)) ' 68- 74 = first rec. of msgs file
30140 II=VAL(MID$(RR$,75,7)) ' 75- 81 = next avail. msgs record
30150 IH=VAL(MID$(RR$,82,7)) ' 82- 88 = last rec. of msgs file
30152 IM=VAL(MID$(RR$,89,7)) ' 89- 95 = maximum number of messages
30155 MC=VAL(MID$(RR$,127,2)) '127-128 = maximum number of "nodes"
30160 CLOSE 2
30170 RETURN
30180 OPEN "R",2,FILE$,128 ' <---- get length of file
30190 FIELD 2,128 AS RR$
30200 UG=LOF(2)/128
30210 CLOSE 2
30220 RETURN
30230 OPEN "R",2,ME$ ' <---- create new MESSAGES file
30240 FIELD 2,128 AS RR$
30245 A$="Creating preformatted"
30270 LSET RR$=" 1"+SPACE$(124)+STR$(MC)
30280 PUT 2,1 ' write out blank checkpoint record
30290 FOR J=2 TO IJ-1
30300 GOSUB 31050
30310 PUT 2 ' write out "door" records of new file
30320 GOSUB 25030
30330 NEXT
30370 FOR J=IJ TO IH
30380 LSET RR$ = SPACE$(128)
30390 PUT 2 ' write out messages records of new file
30400 GOSUB 25030
30410 NEXT
30420 IH=LOC(2) ' point to last available message record
30425 CLOSE 2
30430 GOSUB 30450
30440 RETURN
30450 CLOSE 2
30455 OPEN "R",2,ME$ ' <---- update MESSAGES checkpoint record
30460 FIELD 2,128 AS RR$
30470 GET 2,1
30490 MID$(RR$,52,46)=SPACE$(46) 'reset all counters before filling
30500 MID$(RR$,52,5)=STR$(ID) ' 52- 56 = first rec. of msgs file
30510 MID$(RR$,57,5)=STR$(IE) ' 57- 61 = next avail. user record
30520 MID$(RR$,62,5)=STR$(IG) ' 62- 66 = last rec. of user file
30540 MID$(RR$,68,7)=STR$(IJ) ' 68- 74 = first rec. of msgs file
30550 MID$(RR$,75,7)=STR$(II) ' 75- 81 = next avail. msgs record
30560 MID$(RR$,82,7)=STR$(IH) ' 82- 88 = last rec. of msgs file
30562 MID$(RR$,89,7)=STR$(IM) ' 89- 95 = maximum number of messages
30565 HJ$=STR$(MC):IF MC>9 THEN HJ$=MID$(STR$(MC),2,2)
30570 MID$(RR$,127,2)=HJ$ '127-128 = maximum number of "nodes"
30580 PUT 2,1
30590 CLOSE 2
30600 RETURN
30610 CLOSE 1
30612 CLOSE 2
30613 OPEN "R",1,ME$,128 ' <---- adjust size of the MESSAGES file
30614 FIELD 1,128 AS R$ ' Open old MESSAGES file
30615 A$=ME$:GOSUB 50095
30616 OPEN "R",2,A$,128 ' Open new MESSAGES file
30620 FIELD 2,128 AS RR$
30635 A$="Copying"
30640 OE=B1:IF MC<=B1 THEN OE=MC
30650 GOSUB 50340
30660 FOR J=1 TO OE+1
30670 GET 1,J
30680 LSET RR$=R$ ' write out existing checkpoint and
30690 PUT 2 ' existing "door" records
30700 GOSUB 25030
30710 NEXT
30720 IF B1<=MC THEN GOTO 30780
30730 FOR J = OE+1 TO B1
30740 GOSUB 31050
30750 PUT 2 ' write out expansion "door" records
30760 GOSUB 25030
30770 NEXT
30780 MC=B1 ' set value for maximum number of nodes
30820 FOR J=IJ TO II-1
30830 GET 1,J
30831 IF NOT PURGE THEN GOTO 30840
30832 IF MID$(R$,116,1)=CHR$(225) THEN PRINT"Msg #"+LEFT$(R$,5)+" copied...":GOTO 30840
30833 IF MID$(R$,116,1)=CHR$(226) THEN PRINT"Msg #"+LEFT$(R$,5)+" purged...":J=LOC(1)+VAL(MID$(R$,118,6)):GOTO 30830
30840 LSET RR$=R$
30850 PUT 2 ' write out existing message records
30860 GOSUB 25030
30870 NEXT
30875 B1=LOC(2)+1 ' get new file's next message record
30880 CLOSE 1
30900 IF B3!<LOC(2)+1 THEN GOTO 30960
30905 IF PURGE THEN II=LOC(2)+1:PURGE=0:A$="Preformatting"
30910 FOR J!=II TO B3!
30920 LSET RR$ = SPACE$(128)
30930 PUT 2 ' write out expansion message records
30940 GOSUB 25030
30950 NEXT
30960 IJ=1+MC+1:II=B1:IH=LOC(2):CLOSE 2
30980 XX$="Delete the old "+ME$+" file? (YES or NO)?":GOSUB 50345:GOSUB 22380:ON AB GOTO 31000,31020,30980,30980
50360 IF INSTR(UC$,".") THEN F$=MID$(UC$,1,INSTR(UC$,".")-1)
50370 RETURN
50480 UB=8
50490 NAME UC$ AS UC$
50500 OPEN "R",1,UC$
50510 IF UB<LOF(1)/128 THEN UB=LOF(1)/128
50520 UG=LOF(1)/128:CLOSE 1:RETURN
50530 MQ!=(5*MP)+1+MC
50540 NAME ME$ AS ME$
50550 OPEN "R",1,ME$
50560 IF MQ!<LOF(1)/128 THEN MQ!=LOF(1)/128
50570 CLOSE 1:RETURN
50580 OLD=LOC(1):GET 1,I
50590 IF (MID$(R$,116,1)=CHR$(225) OR MID$(R$,116,1)=CHR$(226)) AND (MID$(R$,61,1)=":" AND MID$(R$,64,1)=":" AND MID$(R$,70,1)="-" AND MID$(R$,73,1)="-") THEN RETURN
50600 PRINT "Message chain broken at record number "+STR$(OLD)
50610 PRINT "Message chain repair in progress!
50620 FOR IQ=OLD+1 TO II-1
50630 GET 1,IQ
50640 IF (MID$(R$,116,1)=CHR$(225) OR MID$(R$,116,1)=CHR$(226)) AND (MID$(R$,61,1)=":" AND MID$(R$,64,1)=":" AND MID$(R$,70,1)="-" AND MID$(R$,73,1)="-") THEN GOTO 50660
50645 NEXT
50650 GOTO 23730
50654 ' Convert Lower Case to Upper Case -------
50655 FOR Z=1 TO LEN(HJ$):MID$(HJ$,Z,1)=CHR$(ASC(MID$(HJ$,Z,1))+32*(ASC(MID$(HJ$,Z,1))>96)):NEXT:RETURN
60040 IF ERR=62 AND (ERL=11600 OR ERL=11620 OR ERL=11640 OR ERL=11705 OR ERL=11706) THEN PRINT CA$+" from a version earlier than CPC13.1 on default drive.":PRINT "Please delete and rerun CONFIG.":RESUME 60340
60140 IF ERL=31000 AND ERR=58 THEN KILL A$:RESUME 31000
60150 IF ERL=31030 AND ERR=58 THEN KILL A$:RESUME 31030
60170 IF ERL=22120 AND ERR=6 THEN RESUME 22100
60270 IF ERL=24750 AND ERR=58 THEN KILL A$:RESUME 24750
60278 IF ERL=50490 AND ERR=58 THEN RESUME 50500
60280 IF ERL=50540 AND ERR=58 THEN RESUME 50550
60282 IF ERL=50490 OR ERL=50540 THEN RESUME 15230
60285 IF ERR=61 THEN PRINT "ERROR - IBM DOS DISKETTE FULL ":RESUME 60340
60290 IF ERR=67 THEN PRINT "ERROR - IBM DOS DIRECTORY FULL":RESUME 60340
60300 IF ERR=70 THEN PRINT "DISKETTE IN DRIVE IS WRITE PROTECTED":RESUME 60340
60310 IF ERR=71 THEN PRINT "DRIVE DOOR OPEN OR MISSING DISKETTE":RESUME 60340
60320 IF ERR=72 THEN PRINT "ERROR - UNFORMATTED IBM DOS DISKETTE IN DRIVE":RESUME 60340
60330 PRINT "+++ Error";ERR;" in line ";ERL "occurred at " TIME$ " on " DATE$
60340 IF F=1 THEN GOSUB 10540:IA!=FNTI!+5
60350 GOSUB 60440
60360 SYSTEM
60370 PRINT "Unable to create preformatted "+UC$+" file.":GOTO 60340